from enum import Enum
from django.http import JsonResponse, HttpResponse


class ResponseCode(Enum):
    SUCCESS = 200  # 操作成功
    CREATED = 201  # 资源创建成功
    ACCEPTED = 202  # 请求已被接受，但尚未处理
    NO_CONTENT = 204  # 请求成功，但没有响应体内容
    BAD_REQUEST = 400  # 请求错误，可能由于缺少必需的参数或参数格式不正确
    UNAUTHORIZED = 401  # 未授权，需要提供有效的身份验证凭证
    FORBIDDEN = 403  # 禁止访问，权限不足
    NOT_FOUND = 404  # 请求的资源不存在
    METHOD_NOT_ALLOWED = 405  # 不允许使用该HTTP方法
    CONFLICT = 409  # 资源冲突，通常发生在创建资源时
    UNPROCESSABLE_ENTITY = 422  # 请求格式正确，但由于语义错误，无法处理请求
    TOO_MANY_REQUESTS = 429  # 请求过多，客户端应稍后再试
    INTERNAL_SERVER_ERROR = 500  # 服务器内部错误
    # ··· 状态码可以自定义


def api_response(code, msg, data=None):
    # 如果 data 为文件流（HttpResponse 对象），直接返回文件流响应
    if isinstance(data, HttpResponse):
        return data  # 返回文件流响应
    if data is None:
        return JsonResponse({'code': code.value, 'msg': msg}, json_dumps_params={"ensure_ascii": False})
    else:
        return JsonResponse({'code': code.value, 'msg': msg, 'data': data}, json_dumps_params={"ensure_ascii": False})


if __name__ == '__main__':
    pass
